package com.example.light.system.service.impl;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.light.system.common.Result;
import com.example.light.system.dto.allDeviceList;
import com.example.light.system.dto.deviceWorkStatusInfo;
import com.example.light.system.dto.roomTree;
import com.example.light.system.entity.*;
import com.example.light.system.vo.*;

import java.util.ArrayList;
import java.util.List;

public interface IDeviceService extends IService<device> {
    // 获取所有教室信息
    Result<List<room>> getAllRoom();

    // 获取设备类型
    Result<List<deviceType>> getDeviceType();

    // 获取设备所有信息
    Result<ArrayList<allDeviceList>> getAllDevice();

    // 查询设备信息
    Result<ArrayList> searchDevice(searchDevice searchDevice);

    // 新增设备
    Result<String> addDevice(insertDevice insertDevice);

    // 删除设备
    Result<String> deleteDevice(String deviceNumber);

    // 编辑设备信息
    Result<String> editDevice(insertDevice insertDevice);

    // 获取房间设备绑定信息
    Result<ArrayList<roomTree>> getDeviceTree();

    // 获取不同工作状态的设备数量
    Result<deviceWorkStatusInfo> getDeviceWorkStatus();

    // 新增灯光模式
    Result<Integer> addLightMode(insertMode insertMode);

    // 返回所有系统灯光模式
    Result<List<mode>> getSystemLightMode();

    // 返回所有自定义灯光模式
    Result<List<mode>> getAutoLightMode();

    // 查询设备状态
    Result<device> getDeviceStatus(String deviceNumber);

    // 查询设备已开启模式id
    Result<Integer> getDeviceMode(String deviceNumber);

    // 更换绑定模式
    Result<String> changeMode(Integer deviceNumber, Integer modeId);

    // 删除自定义模式
    Result<String> deleteMode(Integer modeId);

    // 控制指令
    Result<String> controlDevice(controlParams controlParams);

    // 关闭所有灯光设备
    Result<String> offLineAllDevice();

    // 获取环境数据
    Result<String> getEnvironmentData(JSONObject environmentData);

    // 初始化加载设备使用时长
    Result<String> getUsedCount();

    //初始化已开启设备数量数据
    Result<String> getOnlineDevice();

    void changeDeviceStatus(JSONObject subData,Integer status);
}
